// http://www.axios-js.com/zh-cn/docs/
import axios from 'axios'
import router from './../router'

// 开发环境 yarn serve
// 生产环境 yarn build
// development  production
const isDev = process.env.NODE_ENV === 'development'

// 创建axios实例
// http://www.axios-js.com/zh-cn/docs/#axios-create-config
const request = axios.create({
  // baseUrl 实际请求的地址是 baseURL + 请求地址
  // http://121.89.205.189/api/banner/list  ===》 baseURL + '/banner/list'
  // baseURL: 'http://121.89.205.189/api',
  // 项目上线时无需修改baseURL地址 ---- 需要提前知道线上接口的地址
  // baseURL: isDev ? 'http://121.89.205.189/api' : 'http://121.89.205.189/api',
  // 如果使用了 代理 解决跨域问题
  baseURL: isDev ? '' : 'http://121.89.205.189/api',
  timeout: 6000 // 网络超时时间
})

// axios 的拦截器
// http://www.axios-js.com/zh-cn/docs/#%E6%8B%A6%E6%88%AA%E5%99%A8
// 请求拦截器 ---- 所有的数据在请求之前都会执行的代码 --- 显示loading的动画效果/给接口添加token
request.interceptors.request.use((config) => {
  // 在请求之前做些什么
  // 给所有的请求都传递token信息
  config.headers.common.token = localStorage.getItem('token') || ''
  return config
}, (error) => {
  return Promise.reject(error)
})
// 响应拦截器 ---- 在拿到接口的数据之前都会执行的代码 --- 隐藏loading的动画效果/验证token
request.interceptors.response.use((response) => {
  // 在响应时做些什么
  // token 没有传递  token 传递了只不过是错误的  token 传递了 失效了
  if (response.data.code === '10119') {
    // 引入路由器，跳转到登录页面
    router.push('/login')
  }
  return response
}, (error) => {
  return Promise.reject(error)
})

// 暴露自定义的axios
export default request
